// RAP [rh] external editor not supported ///******************************************************************************* // * Copyright (c) 2000, 2010 IBM Corporation and others. // * All rights reserved. This program and the accompanying materials // * are made available under the terms of the Eclipse Public License v1.0 // * which accompanies this distribution, and is available at // * http://www.eclipse.org/legal/epl-v10.html // * // * Contributors: // * IBM Corporation - initial API and implementation // *******************************************************************************/ //package org.eclipse.ui.internal.misc; // //import java.io.File; //import java.io.IOException; //import java.net.URL; // //import org.eclipse.core.runtime.CoreException; //import org.eclipse.core.runtime.IConfigurationElement; //import org.eclipse.core.runtime.IPath; //import org.eclipse.core.runtime.IStatus; //import org.eclipse.core.runtime.Platform; //import org.eclipse.core.runtime.Status; //import org.eclipse.jface.util.Util; //import org.eclipse.osgi.util.NLS; //import org.eclipse.swt.program.Program; //import org.eclipse.ui.internal.WorkbenchMessages; //import org.eclipse.ui.internal.WorkbenchPlugin; //import org.eclipse.ui.internal.registry.EditorDescriptor; //import org.osgi.framework.Bundle; // //public class ExternalEditor { // private IPath filePath; // // private EditorDescriptor descriptor; // // /** // * Create an external editor. // */ // public ExternalEditor(IPath newFilePath, EditorDescriptor editorDescriptor) { // this.filePath = newFilePath; // this.descriptor = editorDescriptor; // } // // /** // * open the editor. If the descriptor has a program then use it - otherwise build its // * info from the descriptor. // * @exception Throws a CoreException if the external editor could not be opened. // */ // public void open() throws CoreException { // // Program program = this.descriptor.getProgram(); // if (program == null) { // openWithUserDefinedProgram(); // } else { // String path = ""; //$NON-NLS-1$ // if (filePath != null) { // path = filePath.toOSString(); // if (program.execute(path)) { // return; // } // } // throw new CoreException( // new Status( // IStatus.ERROR, // WorkbenchPlugin.PI_WORKBENCH, // 0, // NLS.bind(WorkbenchMessages.ExternalEditor_errorMessage, path), // null)); // } // } // // /** // * open the editor. // * @exception Throws a CoreException if the external editor could not be opened. // */ // public void openWithUserDefinedProgram() throws CoreException { // // We need to determine if the command refers to a program in the plugin // // install directory. Otherwise we assume the program is on the path. // // String programFileName = null; // IConfigurationElement configurationElement = descriptor // .getConfigurationElement(); // // // Check if we have a config element (if we don't it is an // // external editor created on the resource associations page). // if (configurationElement != null) { // try { // Bundle bundle = Platform.getBundle(configurationElement // .getNamespace()); // // See if the program file is in the plugin directory // URL entry = bundle.getEntry(descriptor.getFileName()); // if (entry != null) { // // this will bring the file local if the plugin is on a server // URL localName = Platform.asLocalURL(entry); // File file = new File(localName.getFile()); // //Check that it exists before we assert it is valid // if (file.exists()) { // programFileName = file.getAbsolutePath(); // } // } // } catch (IOException e) { // // Program file is not in the plugin directory // } // } // // if (programFileName == null) { // // Program file is not in the plugin directory therefore // // assume it is on the path // programFileName = descriptor.getFileName(); // } // // // Get the full path of the file to open // if (filePath == null) { // throw new CoreException( // new Status( // IStatus.ERROR, // WorkbenchPlugin.PI_WORKBENCH, // 0, // NLS.bind(WorkbenchMessages.ExternalEditor_errorMessage,programFileName), // null)); // } // String path = filePath.toOSString(); // // // Open the file // // // ShellCommand was removed in response to PR 23888. If an exception was // // thrown, it was not caught in time, and no feedback was given to user // // try { // if (Util.isMac()) { // Runtime.getRuntime().exec( // new String[] { "open", "-a", programFileName, path }); //$NON-NLS-1$ //$NON-NLS-2$ // } else { // Runtime.getRuntime().exec( // new String[] { programFileName, path }); // } // } catch (Exception e) { // throw new CoreException( // new Status( // IStatus.ERROR, // WorkbenchPlugin.PI_WORKBENCH, // 0, // NLS.bind(WorkbenchMessages.ExternalEditor_errorMessage,programFileName), // e)); // } // } //}